﻿using System.Collections.Generic;
using LoungeRepo.Contracts.Core;

namespace LoungeRepo.Contracts.Normalizer
{
    public delegate object EntityResolutionRequestDelegate(ILoungeRepoEntityIdentity entityReference);
    public delegate void ReportEntityDelegate(object entity, ILoungeRepoEntityIdentity entityIdentity);


    public interface IEntityNormalizer
    {
        IEnumerable<INormalizedEntity> Normalize(object entityObject);
        
        object Denormalize(INormalizedEntity normalizedEntity);

        bool TryExtractEntityIdentity(object entityObject, out ILoungeRepoEntityIdentity entityIdentity);
    }
}
